import os
import pandas as pd

def deduplicate_csv(input_csv, output_csv=None):
    """
    对CSV文件进行去重处理
    
    参数:
        input_csv: 输入的CSV文件路径
        output_csv: 输出的CSV文件路径（可选）
    """
    # 如果没有指定输出文件，则在原文件名前加"去重结果_"
    if output_csv is None:
        base_name = os.path.basename(input_csv)
        output_csv = f"去重结果_{base_name}"
    
    try:
        # 读取CSV文件
        df = pd.read_csv(input_csv)
    except Exception as e:
        print(f"读取文件 {input_csv} 时出错: {e}")
        return
    
    print(f"原始文件记录数: {len(df)}")
    
    # 处理去重逻辑
    if 'unifiedSocialCreditCode' in df.columns:
        print("检测到'unifiedSocialCreditCode'列，将使用该列进行去重（排除'-'值）")
        
        # 标记信用代码为'-'的记录
        is_dash = df['unifiedSocialCreditCode'] == '-'
        
        # 分离信用代码为'-'和不为'-'的记录
        dash_df = df[is_dash]
        valid_df = df[~is_dash]
        
        # 对信用代码不为'-'的记录使用该列去重
        valid_df_deduplicated = valid_df.drop_duplicates(subset='unifiedSocialCreditCode')
        
        # 合并去重后的有效记录和信用代码为'-'的记录
        dedup_df = pd.concat([valid_df_deduplicated, dash_df], ignore_index=True)
        
        print(f"去重后记录数: {len(dedup_df)}")
        print(f"移除的重复记录数: {len(df) - len(dedup_df)}")
    else:
        print("警告: 数据中不包含'unifiedSocialCreditCode'列，将使用全量数据去重")
        dedup_df = df.drop_duplicates()
        print(f"去重后记录数: {len(dedup_df)}")
        print(f"移除的重复记录数: {len(df) - len(dedup_df)}")
    
    # 保存到新文件
    try:
        dedup_df.to_csv(output_csv, index=False, encoding='utf-8-sig')
        print(f"去重完成，结果已保存为 '{output_csv}'")
    except Exception as e:
        print(f"保存文件时出错: {e}")

# 使用示例
if __name__ == "__main__":
    # 设置输入文件路径
    input_file = "./merged_output.csv"  # 替换为你的CSV文件路径
    output_file = None  # 设为None会自动生成输出文件名，或指定自定义路径
    
    # 调用函数
    deduplicate_csv(input_file, output_file)